The code I end up with is Program Exercise 8.2. Yours might be even better. I have left all the original code still there (although I will probably have to remove some of it later). When the button is held down the message changes and the counter updates.

I have managed to get the display to count up a value of 2 by quickly pressing and releasing it, but my experiments have convinced me that I have enough time resolution to make the program work. (in fact there is almost a game in seeing how small you can make the number - but this would result in a broken switch after a little while). If I hold down the switch I notice that the counter reaches 200 in a second, so the interrupt rate is correct.